package com.cskaoyan.javase.oop2._2polymorphic._2advantage._2cast;
/**
 * 引用数据类型的强制类型转换(向下转型)
 * 1.发生的条件: 父类引用 --> 子类引用
 * 2.编译成功的条件:
 *      在同一条继承链当中,只要h是把父类引用-->子类引用,都是可以通过编译的
 *
 * 3.运行成功的条件:
 * 要想强转成功,
 * 强转后的引用必须是真的能够指向这个对象
 * 也就是说,强转后的引用必须是这对象自身的引用或者这个对象的父类引用
 *
 * @since 15:58
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // Grandfather gf = new Grandfather();
        // Father f = (Father) gf;
        // Son s = (Son) gf;
        // ((String) gf)

        Grandfather gf = new Grandson();
        Father f = (Father) gf;
        Son s = (Son) gf;
        Grandson gs = (Grandson) gf;
    }
}
class Grandfather {}
class Father extends Grandfather{}
class Son extends Father{}
class Grandson extends Son{}
